package whisper.common.utils;

import org.apache.commons.lang3.time.DateFormatUtils;

import java.text.ParseException;
import java.util.Date;

/**
 * Created by JT on 2017/10/10.
 */
public class DateUtils  {

    /**
     * 字符串时间格式转换
     * @param str：字符串类型时间
     * @param srcPattern：源格式
     * @param targetPattern：目标格式
     * @return
     * @throws ParseException
     */
    public static String format(String str, String srcPattern, String targetPattern) throws ParseException {
        return formatDateToStr(formatStrToDate(str, srcPattern), targetPattern);
    }


    public static String addDays(String str, Integer day, String srcPattern, String targetPattern) throws ParseException {
        return  formatDateToStr(org.apache.commons.lang3.time.DateUtils.addDays(formatStrToDate(str, srcPattern), day), targetPattern);
    }

    /**
     * 增加小时
     * @param str：字符串时间
     * @param hour：小时
     * @param srcPattern：源格式
     * @param targetPattern：目标格式
     * @return
     * @throws ParseException
     */
    public static String addHour(String str, Integer hour, String srcPattern, String targetPattern) throws ParseException {
        return formatDateToStr(org.apache.commons.lang3.time.DateUtils.addHours(formatStrToDate(str, srcPattern), hour), targetPattern);
    }

    /**
     * 字符串时间 转为 时间格式
     * @param str：字符串时间
     * @param pattern：时间格式
     * @return
     * @throws ParseException
     */
    public static Date formatStrToDate(String str, String pattern) throws ParseException {
        return org.apache.commons.lang3.time.DateUtils.parseDate(str, pattern);
    }


    /**
     * 时间转为字符串
     * @param date：时间
     * @param pattern：时间格式
     * @return
     */
    public static String formatDateToStr(Date date, String pattern) {
        return DateFormatUtils.format(date, pattern);
    }

    /**
     * 获得当前时间戳
     * @return
     */
    public static long getTimestamp() {
        return new Date().getTime();
    }

    /**
     * 获取当前时间
     * @param pattern：时间格式
     * @return
     */
    public static String getNowFormat(String pattern) {
        return DateFormatUtils.format(new Date(), pattern);
    }


}
